package com.ls.service;

import com.ls.controller.customer.model.*;
import com.ls.controller.customer.model.UpdateStatusModel;
import com.ls.entity.Customer;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ls.entity.SysUser;
import com.ls.utils.ResultData;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;

/**
 * <p>
 * C端用户表 服务类
 * </p>
 *
 * @author pengyu
 * @since 2023-03-13
 */
public interface ICustomerService extends IService<Customer> {
    /**
     * 查询C端用户列表
     */
    ResultData getPaging(QueryCustomerModel model);

    /**
     * 批量设置黑名单
     */
    ResultData setBlackList(List<String> phoneList);

    /**
     * 批量取消黑名单
     */
    ResultData cancelBlackList(List<String> phoneList);

    /**
     * 分析导入批量开户名单
     */
    ResultData<List<Customer>> analyseExcelCustomer(File file);

    Customer getByPhone(String phone);



    boolean checkByPhone(String phone);

    /**
     * 导入用户
     */
    ResultData saveUploadCustomer(List<Customer> list);
    /** APP 获取短信验证码，5分钟有效 注册和登录都需要使用  */
    ResultData getSmsVerifyCode(String phone);
    /** APP 注册或登录 */
    ResultData appRegisterOrLogin(RegisterOrLoginModel model);
    /** 更新个人信息  */
    ResultData updateOwnInfo(UpdateCustomerModel model);
    /** 设置签名  */
    ResultData setSign(SetSignModel model);
    /** 设置是否平台签名  */
    ResultData setPlatformSign(Integer isPlatformSign);
    /*** 按查询条件导出查询C端用户列表 */
    void export(QueryCustomerModel model, HttpServletResponse response);
    /** 通过ID用户查询C端用户详情  */
    ResultData getInfoById(Long customerId);
    /** 通过ID更新C端用户标签  */
    ResultData updateTradeById(UpdateTradeModel model);
    /** 功能设置-发送通道 及 例外号码  */
    ResultData setChannelAndExceptList(Integer channelType, List<String> phoneList);
    /** 设置密码  */
    ResultData setPassword(SetPasswordModel model);
    /** APP 密码登录 */
    ResultData appPwdLogin(AppLoginModel model);
    /** 获取app当前登录用户信息 */
    ResultData getUserInfo();
    /** 获取app当前用户签名*/
    ResultData getUserSign();
    /** 注销账号 */
    ResultData cancelAccount();
    /** 获取签名列表 */
    ResultData getSignList(QuerySignModel model);
    /** 签名状态变更 */
    ResultData updateStatus(UpdateStatusModel model);
    /** 会员修改用户信息 */
    Boolean changeCustomer(Long customerId,Long productId,Long orderRecordId);
    /** 统计信息 */
    ResultData getData(TimeModel model);
    /** 统计信息会员年龄 */
    ResultData getDataAge(TimeModel model);
    /** 统计信息地区会员 */
    ResultData getDataMap(TimeModel model);
    /** 统计信息地区会员列表 */
    ResultData getDataMapList(TimeModel model);
}
